前一篇我們介紹了基礎物件型別,今天要來介紹同樣是物件型別之一的函式型別,讓我繼續探索 TypeScript,Go~
在一開始我們有個 askAge
的函示,將會回傳一個字串,我們要來一一完成 TypeScript 的要求。
首先定義好函式,很快的,就得到了 TypeScript 的型別推論了。
let askAge = (name, age) => {
return `${name} is ${age} years old.`
}
let ageQuestion = askAge('CY', 28)
let askAge = (name: string, age: number) => {
return `${name} is ${age} years old.`
}
let ageQuestion = askAge('CY', 28)
將參數註記上型別後,看來一切就正常了,但是接下來我們要更完整使用 TypeScript,因此我們要在輸出的變數 ageQuestion
上也加上型別,這樣我們可以更安心使用。
let askAge = (name: string, age: number): string => {
return `${name} is ${age} years old.`
}
let ageQuestion: string = askAge('CY', 28)
let askAge = (name: string, age: number):string => {
return `${name} is ${age} years old.`
}
// 將 28 從 number 改為 string 時,噴錯了
let ageQuestion: string = askAge('CY', '28')
TypeScript 會進一步提醒我們,參數型別錯誤。
let askAge = (name: string, age: number) => {
// 沒有回傳值
`${name} is ${age} years old.`
}
let ageQuestion: string = askAge('CY', 28)
如果需要回傳值,必須乖乖的把 return
加上去 。
void
let askAge = (name: string, age: number): void => {
`${name} is ${age} years old.`
}
any
let askAge = (name: any, age: any): any => {
return `${name} is ${age} years old.`
}
let ageQuestion: any = askAge('CY', 28)
如果使用 any
註記,這樣使用 TypeScript 就失去了使用它的意義了。
今天探討了函式的型別推論與註記,除了參數要定義型別以外,還有記得要定義是否要回傳值,要的話會是什麼型別,明天讓我們繼續往下探索吧!